package org.belkodevelop.geocoding.adress.json;

import java.util.List;
import org.codehaus.jackson.annotate.JsonProperty;


public class GoogleAdress {
    @JsonProperty("address_components")
    private List<AdressComponent> addressComponents;
    
    @JsonProperty("formatted_address")
    private String formattedAddress;
    
    private Geometry geometry;
    
    @JsonProperty("partial_match")
    private Boolean partialMatch;
    
    private List<String> types;
    
    private String string;

    public List<AdressComponent> getAddressComponents() {
        return addressComponents;
    }

    public void setAddressComponents(List<AdressComponent> addressComponents) {
        this.addressComponents = addressComponents;
    }

    public String getFormattedAddress() {
        return formattedAddress;
    }

    public void setFormattedAddress(String formattedAddress) {
        this.formattedAddress = formattedAddress;
    }

    public Geometry getGeometry() {
        return geometry;
    }

    public void setGeometry(Geometry geometry) {
        this.geometry = geometry;
    }

    public Boolean getPartialMatch() {
        return partialMatch;
    }

    public void setPartialMatch(Boolean partialMatch) {
        this.partialMatch = partialMatch;
    }

    public List<String> getTypes() {
        return types;
    }

    public String getString() {
        return string;
    }

    static public class Geometry {
        private Location location;
        
        @JsonProperty("location_type")
        private String locationType;
        
        @JsonProperty("viewport")
        private ViewPort viewPort;

        private ViewPort bounds;

        public Location getLocation() {
            return location;
        }

        public void setLocation(Location location) {
            this.location = location;
        }

        public String getLocationType() {
            return locationType;
        }

        public void setLocationType(String locationType) {
            this.locationType = locationType;
        }

        public ViewPort getViewPort() {
            return viewPort;
        }

        public void setViewPort(ViewPort viewPort) {
            this.viewPort = viewPort;
        }

        public ViewPort getBounds() {
            return bounds;
        }

        public void setBounds(ViewPort bounds) {
            this.bounds = bounds;
        }
    }
    
    static public class ViewPort {
        private Location northeast;
        private Location southwest;

        public Location getNortheast() {
            return northeast;
        }

        public void setNortheast(Location northeast) {
            this.northeast = northeast;
        }

        public Location getSouthwest() {
            return southwest;
        }

        public void setSouthwest(Location southwest) {
            this.southwest = southwest;
        }
    }
}
